Android:WiFi连接之一 您所在的位置:网站首页 安卓查看已经连接wifi密码 没二维码了 Android:WiFi连接之一

Android:WiFi连接之一

2024-07-14 01:50| 来源: 网络整理| 查看: 265

WIFI连接相关知识 感慨WIFI连接的相关权限打开、关闭WIFI打开WiFi:关闭WiFi: WiFi连接输入WiFi名称、密码实现连接 断开WIFI连接

感慨

最近学习安卓WiFi连接,真是一言难尽啊。WiFi连接这部分的资料网上并不多,于是只能官方文档+一直找资料学。即便如此,也是让我自闭了,一堆API弃了,网上找的有的已经不适用了。。。总之就是问题多多,所以还是自己总结一下笔记吧,加深理解,也防止后面自己用到又要四处去找资料。

WIFI连接的相关权限

android.permission.ACCESS_FINE_LOCATION这个权限主要getConnectionInfo()这个方法需要,这个方法是用于获取处于活跃状态的WiFi信息,包括已经连接和连接中两种状态。(此外获取wifi列表的的方法中也需要,这里只介绍getConnectionInfo())

这个权限要手动打开,且不会提示,除非你实现了动态获取权限。除了手动设置权限外,还要打开GPS

打开、关闭WIFI

WiFi的打开和关闭用的 WifiManager 类中的setWifiEnabled方法实现。

打开WiFi: //首先,创建WifiManager对象 Context context = getApplicationContext(); WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //判断WiFi是否打开,没有则打开WiFi,res为真则成功打开了 if (!wifiManager.isWifiEnabled()) { boolean res = wifiManager.setWifiEnabled(true); } 关闭WiFi: //首先,创建WifiManager对象 Context context = getApplicationContext(); WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //判断WiFi是否打开,打开了则关闭WiFi,res为真则成功关闭了 if (wifiManager.isWifiEnabled()) { boolean res = wifiManager.setWifiEnabled(true); }

API29以后 ,这个方法已经被弃用了,没有效果,res 会一直为 false-——其实很多WiFi相关的方法都弃了。一开始我还以为有什么代替的方法,结果查了很久发现,在面向安卓8以后的平台中已经不允许app打开和关闭WiFi,所以是没有新方法的。如果要用,只能这样: 在相应的gradle下把这些改成29以前的 在这里插入图片描述 我是把三个都改了,可能只改一些就行,不过我没试了。

WiFi连接 输入WiFi名称、密码实现连接 // 首先配置一个WifiConfiguration对象 String SSID = "Rair"; //输入WIFI名称 String Password = "88888888"; //输入WIFI密码 //WIFI安全性 WifiCipherType Type = Password.equals("")? WifiConnector.WifiCipherType.WIFICIPHER_NOPASS: WifiConnector.WifiCipherType.WIFICIPHER_WPA WifiConfiguration config = new WifiConfiguration(); //公认的IEEE 802.11验证算法。 config.allowedAuthAlgorithms.clear(); //公认的的公共组密码。 config.allowedGroupCiphers.clear(); //公认的密钥管理方案。 config.allowedKeyManagement.clear(); //密码为WPA。 config.allowedPairwiseCiphers.clear(); //公认的安全协议。 config.allowedProtocols.clear(); //设置WiFi名称 config.SSID = "\"" + SSID + "\""; // 开放 if (Type == WifiCipherType.WIFICIPHER_NOPASS) { config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); } // wpa if (Type == WifiCipherType.WIFICIPHER_WPA) { //设置密码 config.preSharedKey = "\"" + Password + "\""; //不广播其SSID的网络 config.hiddenSSID = true; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); // 此处需要修改否则不能自动重联 // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } //添加网络 int netID = wifiManager.addNetwork(wifiConfig); //连接WIFI boolean enabled = wifiManager.enableNetwork(netID, true); 断开WIFI连接

断开WiFi连接有两种方法

//暂时断开,可以重连 wifiManager.disconnect() //断开,不可以重连,忘记密码 wifiManager.disableNetwork(netID)

以上代码是网上的代码结合我的学习情况修改



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有